/**
 * <p>checkbox代码选择控件，数据来自系统代码字典表，在代码字典变动的时候“内存同步”后会更新codedata.js</p>
 * xtype = cceafcheckboxgroupfield

 * @module Ext-ux-cceaf-control
 * @class cceaf.control.CheckboxGroupField
 * @extends Ext.form.CheckboxGroup
 * @since 1.0
 */
Ext.define('cceaf.control.CheckboxGroupField',{
	extend: 'Ext.form.CheckboxGroup', 
	requires: [
 	    'cceaf.ControlDefaultConfig'
    ],
    alias: 'widget.cceafcheckboxgroupfield',
       	
	constructor: function(config){
		config = config || {};

		var checkboxNames = config.checkboxNames;
		if (!Ext.isArray(checkboxNames)) {
			cceaf.util.ExtHelper.showInfoDialog('checkboxgroup必须设置checkboxNames属性为字符串数组（此值将提交）！');
			return;
		}
		
		var inputValues = config.inputValues;
		if (inputValues && !Ext.isArray(inputValues)) {
			cceaf.util.ExtHelper.showInfoDialog('checkboxgroup设置inputValues属性必须为字符串数组！');
			return;
		}
		if(inputValues && inputValues.length != checkboxNames.length ) {
			cceaf.util.ExtHelper.showInfoDialog('checkboxgroup的checkboxNames和inputValues的长度必须一致！');
			return;
		}
		
		var queryMode;
		if(config.queryMode){
			queryMode = config.queryMode;
		}
		else{
			queryMode = 'local';
		}
		
		var store = config.store;
		if (queryMode == 'local') {
			var data = eval('_jsonCode.' + config.codeType);
			if (data == null) {
				data = [];
			}
			
			store = new Ext.data.Store({
		    	model: 'cceaf.model.main.CceafCode',
		    	//autoLoad: true,
		    	data: data
		    });
		} else {
			store = new Ext.data.Store({
		    	model: 'cceaf.model.main.CceafCode',
		    	//autoLoad: true,
		    	proxy: {
		    		type: 'ajax',
		    		url: 'getCodeListOfPageDataProvider.action',
		    		extraParams: {codetype: config.codeType}
				}
		    });
		}
		
		if(store.getCount() != checkboxNames.length ) {
			cceaf.util.ExtHelper.showInfoDialog('checkboxgroup的checkboxNames和指定代码表的长度必须一致！');
			return;
		}
		
		var items = [];
		var i = 0;
		store.each(function(record){
			var checked = false;
			if (inputValues && record.get("value") == inputValues[i]) {
				checked = true;
			}
			
			items[i] = {
				boxLabel: record.get("name"), 
				xtype: 'checkboxfield',
				name: checkboxNames[i],
				inputValue: record.get("value"),
				checked: checked
			};
			i++;
		});

		var defaultFieldWidth = cceaf.ControlDefaultConfig.DEFAULT_FIELD_WIDTH;
		config = Ext.applyIf(config, {
			width: defaultFieldWidth,
			items: items
		});

		cceaf.control.CheckboxGroupField.superclass.constructor.apply(this, arguments);
	},
	
	/**
	 * 包含checkbox的名字集合
	 * 
	 * @property checkboxNames 
     * @type Array
     * @default null
	 */
	checkboxNames: null,
	
	/**
	 * 代码类型，必须填写
	 *
     * @property codeType 
     * @type String
     * @default null
     */
	codeType: null,
	
	/**
	 * 对应checkbox的代码值，必须与checkboxNames维数一致
	 *
     * @property inputValues 
     * @type Array
     * @default null
     */
	inputValues: null,
	
	/**
	 * 查询方式
	 *
     * @property queryMode 
     * @type String
     * @default 'local'
     */
	queryMode: 'local'
	
//	getInputValue: function(){
//		return this.inputValue;
//	}
});